package com.hwx.order_feign.feign;

import com.alibaba.fastjson.JSONObject;
import com.hwx.order_feign.feign.impl.ProductFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @Desc: 声明需要调用的微服务名称
 * 注解：@FeignClient
 *        name:服务提供者的服务名称
 *        allback : 配置熔断发生降级方法
 *                  实现类.class
 *
 * @FeignClient 注解通过name指定需要调用的微服务的名称，用于创建Ribbon的负载均衡器,
 * 				所以Ribbon会把 service-product 解析为注册中心的服务。
 *
 * @Author: hwx
 * @Date: 2020/5/26 14:48
 * @Version: v1.0
 **/
@FeignClient(name = "service-product", fallback = ProductFeignClientFallBack.class)
public interface ProductFeignClient {


	/**
	 * @desc: 调用商品微服务接口
	 * 配置需要 调用的微服务接口
	 * 此处的url为：提供者controller方法的具体url
	 *
	 * @author: hwx
	 * @date: 2020/5/26 14:50
	 * @param: id -> 商品id
	 * @return:
	 */
	@GetMapping(value = "/product/{id}")
	JSONObject findById(@PathVariable("id") Integer id);

}
